
//这个函数在整个wps加载项中是第一个执行的
import {
  getOriginURL,
  GetDocParamsValue,
  setDocParamsValue, setPluginStorageItem, getPluginStorageItem,
} from "../common/common";
import {constEtEnum, EnumDocSaveFlag, WPS_Enum} from "@/components/WpsOffice/et/enum";
import {
  pInitParameters,
  AddDocumentEvent,
  saveToServer,
  pGet996CodeDocLabel,
  pSetUserNameLabelControl,
  OnShowDialog,
  createTaskPane,
  OnBtnSaveAsLocalFile,
  OnDoChangeToOtherDocFormat,
} from "@/components/WpsOffice/et/onEtControl";
import {

  pCheckIs996CodeOffice, ribbonEtTaName,

} from "@/components/WpsOffice/et/etCommon";

function OnAddinLoad(ribbonUI) {
  try {
    if (typeof window.Application.ribbonUI != 'object') {
      window.Application.ribbonUI = ribbonUI
    }

    if (typeof window.Application.Enum != 'object') {
      // 如果没有内置枚举值
      window.Application.Enum = WPS_Enum
    }

    //配置控制的初始化过程
    pInitParameters();
    //挂接文档事件处理函数
    AddDocumentEvent();
  }catch (e) {
    alert("OnAddinLoad执行失败："+e.message)
    alert(e.stack)
  }

  return true
}

var WebNotifycount = 0
function OnAction(control) {
  try {
    let eleId;
    let tag;
    if (typeof control == "object" && arguments.length == 1) { //针对Ribbon的按钮的
      control = control;
    } else if (typeof control == "undefined" && arguments.length > 1) { //针对idMso的
      control = arguments[1];
    } else if (typeof control == "boolean" && arguments.length > 1) { //针对checkbox的
      control = arguments[1];
    } else if (typeof control == "number" && arguments.length > 1) { //针对combox的
      control = arguments[2];
    }
    eleId = control.Id;
    tag = control.Tag;

    const doc = window.Application.ActiveWorkbook
    // let amisKey = null;
    // if(eleId.indexOf("amisShowDialog") !== -1 ){
    //   amisKey = eleId.replace("amisShowDialog-","")
    //   eleId = "amisShowDialog-" ;
    // }
    // if(eleId.indexOf("amisShowTaskPane-") !== -1 ){
    //   amisKey = eleId.replace("amisShowTaskPane-","")
    //   eleId = "amisShowTaskPane-" ;
    // }
    switch (eleId) {
      // *****************************  加载项
      case 'btnShowDialog': {
        OnShowDialog("/wps-office/wps/index.html", "996全干系统", 500, 300)
        break
      }
      case 'btnShowTaskPane': {
        createTaskPane("/wps-office/wps/index.html")
      }
        break
      case 'amisShowDialog': {
        OnShowDialog("/wps-office/et/index.html#/SinglePage/amisForm/AmisFormShowByKey?amisFormShowFormKey="+tag, "996全干系统", 500, 300)
        break
      }
      case 'amisShowTaskPane': {
        createTaskPane("/wps-office/et/index.html#/SinglePage/amisForm/AmisFormShowByKey?amisFormShowFormKey="+tag)
      }
        break
      case 'btnWebNotify': {
        let currentTime = new Date()
        let timeStr =
          currentTime.getHours() + ':' + currentTime.getMinutes() + ':' + currentTime.getSeconds()
        let pluginStorageItem = getPluginStorageItem(doc.FullName);
        window.Application.OAAssist.WebNotify(
          '这行内容由wps加载项主动送达给业务系统，文档参数：'+pluginStorageItem+'，比如时间值:' +
          timeStr +
          '，次数：' +
          ++WebNotifycount,
          true
        )
      }
        break
      case 'saveToServer': {
        saveToServer()
      }
        break
      case "btnSaveAsFile": //另存为本地文件
        OnBtnSaveAsLocalFile();
        break;
      case "btnChangeToPDF": //转PDF文档并上传
        OnDoChangeToOtherDocFormat(".pdf");
        break;
      //------------------------------------
      //插入批注
      case "btnInsertAnnotation":
        createTaskPane("/wps-office/et/index.html#/SinglePage/office/insertAnnotation")
        break;
      // *****************************  命令
      case "FileSave": //通过idMso进行「保存」功能的自定义
      {
        if (pCheckIs996CodeOffice()) { //文档来源是业务系统的，做自定义
          alert("这是996全干系统文档，将Ctrl+S动作做了重定义，可以调用OA的保存文件流到业务系统的接口。")
          saveToServer();
        } else { //本地的文档，期望不做自定义，通过转调idMso的方法实现
          // wps.EtApplication().CommandBars.ExecuteMso("FileSave");
          wps.EtApplication().CommandBars.ExecuteMso("SaveAll");
          //此处一定不能去调用与重写idMso相同的ID，否则就是个无线递归了，即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
        }
        break;
      }
      case "FileSaveAsMenu": //另存为
      {
        if (pCheckIs996CodeOffice()) { //文档来源是业务系统的，做自定义
          alert("这是996全干系统文档，将Ctrl+S动作做了重定义，可以调用OA的保存文件流到业务系统的接口。")
          saveToServer();
        } else { //本地的文档，期望不做自定义，通过转调idMso的方法实现
          // wps.EtApplication().CommandBars.ExecuteMso("FileSave");
          wps.EtApplication().CommandBars.ExecuteMso("SaveAll");
          //此处一定不能去调用与重写idMso相同的ID，否则就是个无线递归了，即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
        }
        break;
      }
      case "FileSaveAs": //另存为
      {
        if (pCheckIs996CodeOffice()) { //文档来源是业务系统的，做自定义
          alert("这是996全干系统文档，将Ctrl+S动作做了重定义，可以调用OA的保存文件流到业务系统的接口。")
          saveToServer();
        } else { //本地的文档，期望不做自定义，通过转调idMso的方法实现
          // wps.EtApplication().CommandBars.ExecuteMso("FileSave");
          wps.EtApplication().CommandBars.ExecuteMso("SaveAll");
          //此处一定不能去调用与重写idMso相同的ID，否则就是个无线递归了，即在这个场景下不可调用FileSaveAs和FileSaveAsMenu这两个方法
        }
        break;
      }
      // *****************************  右键

      default:
        break
    }
  }catch (e){
    alert(e.message)
    alert(e.stack)
  }
  return true
}

function GetImage(control) {
  let eleId;
  if (typeof control == "object" && arguments.length == 1) { //针对Ribbon的按钮的
    eleId = control.Id;
  } else if (typeof control == "undefined" && arguments.length > 1) { //针对idMso的
    eleId = arguments[1].Id;
  } else if (typeof control == "boolean" && arguments.length > 1) { //针对checkbox的
    eleId = arguments[1].Id;
  } else if (typeof control == "number" && arguments.length > 1) { //针对combox的
    eleId = arguments[2].Id;
  }
  switch (eleId) {
    case 'saveToServer':
      return '../images/w_Save.png'
    case "btnSaveAsFile": //另存为本地文件
      return "../images/w_SaveAs.png";
    case "btnChangeToPDF": //输出为PDF格式
      return "../images/w_PDF.png";
    case 'importLocalFile':
      return '../images/w_ImportLocalFile.png'
    case 'importLocalFileInsert':
      return '../images/w_ImportDoc.png'
    case 'importLocalFileAppend':
      return '../images/w_ImportDoc.png'
    case 'importLocalFileReplace':
      return '../images/w_ImportDoc.png'
    case "btnInsertAnnotation":
      return "../images/c_bookmark.png";
    default:
  }
  return '../images/c_default.png'
}

function OnGetEnabled(control) {
  const eleId = control.Id
  const doc = window.Application.ActiveWorkbook
  switch (eleId) {
    default:
      break
  }
  return true
}

function OnGetVisible(control) {
  let eleId;
  if (typeof control == "object" && arguments.length == 1) { //针对Ribbon的按钮的
    eleId = control.Id;
  } else if (typeof control == "undefined" && arguments.length > 1) { //针对idMso的
    eleId = arguments[1].Id;
  } else if (typeof control == "boolean" && arguments.length > 1) { //针对checkbox的
    eleId = arguments[1].Id;
  } else if (typeof control == "number" && arguments.length > 1) { //针对combox的
    eleId = arguments[2].Id;
  }
  console.log(eleId)
  if(eleId == ribbonEtTaName()){
    return pCheckIs996CodeOffice() ;
  }
  return true
}

function OnGetLabel(control) {
  const eleId = control.Id
  switch (eleId) {
    case 'lblDocSourceValue': {
      return pCheckIs996CodeOffice() ? "全干系统文件" : "非全干系统文件";
    }
    case 'lblDocLandModeValue': {
      return pGet996CodeDocLabel() ;
    }
    case 'lblUserNameValue': {
      return pSetUserNameLabelControl() ;
    }

    case "btnInsertAnnotation":
      return "插入批注";
  }
  return ''
}

function OnNewDocumentApiEvent(doc) {
  alert('新建文件事件响应，取文件名: ' + doc.Name)
}




//这些函数是给wps客户端调用的
export default {
  OnAddinLoad,
  OnAction,
  GetImage,
  OnGetEnabled,
  OnGetVisible,
  OnGetLabel,
  OnNewDocumentApiEvent
}
